package _05_stack;

import java.util.Iterator;
import java.util.StringJoiner;

/**
 * @author: mornd
 * @dateTime: 2023/6/5 - 20:41
 * 栈定义
 */

public interface Stack<E> extends Iterable<E> {
    /**
     * 向栈顶压入元素
     * @return 是否压入成功，如果栈已满，则元素压入失败，返回false
     */
    boolean push(E e);

    /**
     * 从栈顶弹出一个元素
     * @return 此队列的头部，如果栈为空，则为null
     */
    E pop();

    /**
     * 返回栈顶元素
     * @return 此队列的头部，如果栈为空，则为null
     */
    E peek();

    /**
     * 栈是否为空
     * @return
     */
    boolean isEmpty();

    /**
     * 栈是否已满
     * @return
     */
    boolean isFull();

    /**
     * 返回迭代器对象
     * @return
     */
    @Override
    Iterator<E> iterator();

    int size();
}
